<!DOCTYPE html>
<html lang="en">

{% include 'head.html' %}

<body>
  {% include 'body-nav.html' %}

  <div class="container-fluid">
    <div class="panel-group">
      <div class="panel panel-default">
        <div class="panel-heading">Status and calibration</div>
        <div class="panel-body">

          <div class="container-fluid">
            <div class="row">
              <div class="col-sm-4">
                <h2>Current DPDCE status</h2>
                <div>
                  <div id="dpdstatus" style="font-weight:bold;">N/A</div>
                  <div class="progress">
                    <div id="dpdprogress" class="progress-bar" role="progressbar" style="width:0%">
                      <span id="dpdprogresstext"></span>
                    </div>
                  </div>
                </div>
                <div class="well well-sm" id="dpdresults">N/A</div>
              </div>
              <div class="col-sm-4">
                <h2>List of saved DPD settings</h2>
                <!--TODO: 'erase' and 'clear' buttons. Show DPD settings in tooltip?-->
                <p>This list contains previously used predistortion settings that you
                can recall.</p>
                <p>
                <select id="dpdadaptdumps" size="8" style="width:70%" multiple></select>
                </p>
                <p>
                <button type="button" class="btn btn-sm btn-info" id="adaptdumpsrefreshbtn">Refresh
                </button>
                <button type="button" class="btn btn-sm btn-warning" id="adaptdumpsload">Load and Apply
                </button>
                </p>
              </div>
              <div class="col-sm-4">
                <h2>Summary</h2>
                <p>Calibration needs to be done once before the PA model
                can be trained. Every time calibration is changed, the predistortion
                parameters are invalidated!</p>
                <p>Once calibration succeeded and correct RX gain is set, you
                can trigger a capture and model the PA. Usually, several capture
                runs are needed before the model can be trained.</p>
                <p>The capture and model analysis will calculate a new set of
                DPD model data, that you can apply using the Update Predistorter button.</p>
                <p>The reset button allows you to reset the computation engine. It does not
                modify the currently active predistorter.</p>
              </div>
            </div>
          </div>

          <button type="button" class="btn btn-sm btn-warning" id="calibratebtn">
            Calibrate</button>
          <button type="button" class="btn btn-sm btn-warning" id="triggerbtn">
            Trigger Capture and PA Modeling</button>
          <button type="button" class="btn btn-sm btn-warning" id="adaptbtn">
            Update Predistorter</button>
          <button type="button" class="btn btn-sm btn-info" id="resetbtn">
            Reset Capture and Model</button>
        </div>
      </div>

      <div class="panel panel-default">
        <div class="panel-heading">Capture Statistics</div>
        <div class="panel-body">
          <img id="dpdcapturestats" />
        </div>
      </div>
      <div class="panel panel-default">
        <div class="panel-heading">AM/AM and AM/PM Model</div>
        <div class="panel-body">
          <div class="container-fluid">
            <div class="row">
              <div class="col-sm-2">
                <p>Model data:</p>
              </div>
              <div class="col-sm-10">
                <pre id="dpdmodeldata"></pre>
              </div>
            </div>
          </div>
          <img id="dpdmodelplot" />
        </div>
      </div>

      <!--
      <div class="panel panel-default">
        <div class="panel-heading">Status</div>
        <div class="panel-body">
          <button type="button" class="btn btn-sm btn-info" id="dpdstatusbutton">
            Update</button>
          <div>Histogram: <span id="histogram">N/A</span></div>
          <div>Capture status
            <span id="capturestatus">N/A</span></div>
          <div>Number of samples captured:
            <span id="capturelength">None</span></div>
          <div>TX median: <span id="tx_median">N/A</span></div>
          <div>RX median: <span id="rx_median">N/A</span></div>
          <div>Point cloud: <img id="dpd_pointcloud" /></div>
        </div>
      </div>
      -->
    </div>
  </div>
</body>
</html>

<!--
   Copyright (C) 2019
   Matthias P. Braendli, matthias.braendli@mpb.li

This file is part of ODR-DabMod.

ODR-DabMod is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

ODR-DabMod is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with ODR-DabMod.  If not, see <http://www.gnu.org/licenses/>.
-->
